package limfic.dominio;

/**
 * Esta clase almacena todos los datos de los usuarios del sistema
 * Tiene composicion con la clase roles.
 * @author OpenCodes
 */
public class Usuario {

    private int id;
    private String nombre;
    private String password;
    protected Rol rol;

    /**
     * Constructor de Usuario
     * @param id
     * @param nombre
     * @param password
     * @param rol
     */
    public Usuario(int id, String nombre, String password, Rol rol) {
        this.id = id;
        this.nombre = nombre;
        this.password = password;
        this.rol=rol;

    }

    /**
     * Recupera el valor de password
     *
     * @return password (string)
     */
    public String getPassword() {
        return password;
    }

    /**
     * Establece el valor de password
     *
     * @param password (string)
     */
    public void setPassword(String password) {
        this.password = password;
    }

    /**
     * Recupera nombre
     *
     * @return nombre (string)
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * Establece el valor nombre
     *
     * @param nombre (string)
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * Recupera el valor identificador
     *
     * @return id (int)
     */
    public int getId() {
        return id;
    }

    /**
     * Establece el valor del id
     *
     * @param ud (int)
     */
    public void setId(int id) {
        this.id = id;
    }

    /**
     * Get the value of rol
     *
     * @return the value of rol
     */
    public Rol getRol() {
        return rol;
    }

    /**
     * Set the value of rol
     *
     * @param rol new value of rol
     */
    public void setRol(Rol rol) {
        this.rol = rol;
    }

    @Override
    public String toString() {

        StringBuilder b= new StringBuilder("Usuario{ ");
        b.append("nombre:");
        b.append(nombre);
        b.append("; password:");
        b.append(password);
        if (rol != null) {
			b.append("; rol:");
			b.append(rol);
		}
        b.append(" }");
        return b.toString();

    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Usuario other = (Usuario) obj;
        if ((this.nombre == null) ? (other.nombre != null) : !this.nombre.equals(other.nombre)) {
            return false;
        }
        if ((this.password == null) ? (other.password != null) : !this.password.equals(other.password)) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 23 * hash + (this.nombre != null ? this.nombre.hashCode() : 0);
        hash = 23 * hash + (this.password != null ? this.password.hashCode() : 0);
        return hash;
    }

}
